demo: Clear filter when search is stopped
authorMatthias Clasen <mclasen@redhat.com>
Sun, 12 Jul 2020 20:47:51 +0000 (16:47 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 12 Jul 2020 20:47:51 +0000 (16:47 -0400)
When the search entry disappears on Escape,
reset the search string to "", so we don't
end up with a filtered list and no obvious
way to remove the filtering.

demos/gtk-demo/main.c
demos/gtk-demo/main.ui

index 11e7f0f1b6894aa0655797128db180059705a514..5bad5e80aa735a36b05f299d51dab8d3f450fe16 100644 (file)
@@ -1070,13 +1070,23 @@ get_child_model (gpointer item,
   return NULL;
 }
 
+static void
+clear_search (GtkSearchBar *bar)
+{
+  if (!gtk_search_bar_get_search_mode (bar))
+    {
+      GtkWidget *entry = gtk_search_bar_get_child (GTK_SEARCH_BAR (bar));
+      gtk_editable_set_text (GTK_EDITABLE (entry), "");
+    }
+}
+
 static void
 activate (GApplication *app)
 {
   GtkBuilder *builder;
   GListModel *listmodel;
   GtkTreeListModel *treemodel;
-  GtkWidget *window, *listview, *search_entry;
+  GtkWidget *window, *listview, *search_entry, *search_bar;
   GtkFilterListModel *filter_model;
   GtkFilter *filter;
 
@@ -1099,6 +1109,8 @@ activate (GApplication *app)
   toplevel = GTK_WIDGET (window);
   listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview"));
   g_signal_connect (listview, "activate", G_CALLBACK (activate_cb), window);
+  search_bar = GTK_WIDGET (gtk_builder_get_object (builder, "searchbar"));
+  g_signal_connect (search_bar, "notify::search-mode-enabled", G_CALLBACK (clear_search), NULL);
 
   listmodel = create_demo_model ();
   treemodel = gtk_tree_list_model_new (FALSE,
index 975e3ea1bc9b4ff76206a0a67bdeb363ab0388a3..5d97687ab873a9dda522cd0b46253c7a762261a9 100644 (file)
@@ -60,7 +60,7 @@
                 <property name="orientation">vertical</property>
 
                 <child>
-                  <object class="GtkSearchBar">
+                  <object class="GtkSearchBar" id="searchbar">
                     <property name="key-capture-widget">window</property>
                     <child>
                       <object class="GtkSearchEntry" id="search-entry"/>